#include "EPluginDefault.h"
#include "DefineCommon.h"
#include "EItem.h"
#include "EItemInPluginParent.h"
#include <EItemManager.h>
#include <Autogen/EItemInPlugin_autogen.h>
#include <Autogen/EItemInPluginParent_autogen.h>


EPluginDefault::EPluginDefault()
{

}

EPluginDefault::~EPluginDefault()
{

}

EString EPluginDefault::getName()
{
    return EString("Default");
}

EString EPluginDefault::getDescription()
{
    return EString("A default plugin that show a simplest plugin code struct.");
}

void EPluginDefault::registThis()
{
    /**regist type to EItemManager*/
    EItemPtr typeRoot = NewSmartPtr(EItem)();
    typeRoot->setName("PluginDefault");

    EItemInPluginParent_registToPlugin(typeRoot);
    EItemInPlugin_registToPlugin(typeRoot);

    // EItemPtr type1 = NewSmartPtr(EItem)();
    // EItemPtr type2 = NewSmartPtr(EItem)();
    // EItemPtr type3 = NewSmartPtr(EItem)();
    // EItemPtr type4 = NewSmartPtr(EItem)();

    // typeRoot->addChild(type1);
    // typeRoot->addChild(type2);
    // typeRoot->addChild(type3);
    // typeRoot->addChild(type4);

    // typeRoot->setName("EPluginDefault");
    // type1->setName("typ1");
    // type2->setName("typ2");
    // type3->setName("typ3");
    // type4->setName("typ4");

    EItemManager::instance()->addToItemTypeRoot(typeRoot);

    ELOG_INFO("EPluginDefault is registed");
}
    
EPluginPtr EPluginExportFunction()
{
    // ELOG_DEBUG("PluginDefault is loading 11111111");
    EPluginPtr pp = new EPluginDefault;

    return pp;
}
